// 公式编辑器的核心类型定义

// 编辑器模式
export type EditorMode = 'visual' | 'code';

// 公式格式选项
export interface FormulaFormatOptions {
  fontSize: number; // 字体大小百分比 100%, 120%, 150%
  color: string; // 颜色值
  align: 'left' | 'center' | 'right'; // 对齐方式
}

// 符号分类
export type SymbolCategory = 
  | 'basic'       // 基础运算
  | 'functions'   // 函数
  | 'matrix'      // 矩阵
  | 'integral'    // 积分
  | 'greek'       // 希腊字母
  | 'chemistry';  // 化学符号

// 单个符号定义
export interface FormulaSymbol {
  label: string;      // 显示名称
  latex: string;      // LaTeX代码
  category: SymbolCategory; // 所属分类
  description?: string; // 可选描述
}

// 导出格式
export type ExportFormat = 'latex' | 'mathml' | 'svg' | 'png';

// 导出选项
export interface ExportOptions {
  format: ExportFormat;
  pngResolution?: number; // PNG导出的分辨率
}

// 编辑器状态
export interface EditorState {
  mode: EditorMode;
  latex: string;
  format: FormulaFormatOptions;
  error?: string; // 错误信息
}

/**
 * 符号库类型定义
 */
export type SymbolLibrary = {
  [K in SymbolCategory]: FormulaSymbol[];
};

// 公式解析结果
export interface ParseResult {
  success: boolean;
  ast?: any; // 抽象语法树
  error?: string;
  errorPosition?: number;
}

// Slate编辑器自定义节点类型
export interface FormulaNode {
  type: 'formula';
  children: [{ text: string }];
  latex: string; // 存储LaTeX代码
}